package com.example.xutildemoproject.fragment;

import android.os.Handler;

import androidx.core.app.NotificationCompat;

import com.example.xutildemoproject.R;
import com.example.xutildemoproject.activity.TestRouterActivity;
import com.example.xutildemoproject.recevier.NotifyBroadCastReceiver;
import com.xuexiang.xpage.annotation.Page;
import com.xuexiang.xpage.base.XPageSimpleListFragment;
import com.xuexiang.xutil.app.PendingIntentUtils;
import com.xuexiang.xutil.app.notify.NotificationUtils;
import com.xuexiang.xutil.resource.ResourceUtils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Page(name = "NotificationUtils使用")
public class NotifyFragment extends XPageSimpleListFragment {
    int progress = 0;
    private final Handler handler = new Handler();
    @Override
    protected List<String> initSimpleData(List<String> lists) {
        lists.add("简单通知");
        lists.add("图片通知");
        lists.add("多文本通知");
        lists.add("消息盒通知");
        lists.add("进度条通知");
        lists.add("无进度条通知");
        lists.add("自定义通知");
        return lists;
    }

    @Override
    protected void onItemClick(int position) {
        switch (position) {
            case 0:
                //简单通知
                NotificationUtils.buildSimple(1000, R.mipmap.ic_launcher,
                        "Linux 基金会宣布成立 DizmeID 基金会",
                        "近日，Linux 基金会宣布成立 DizmeID 基金会和技术项目，旨在支持数字身份认证。这项工作将把自主身份的优势与必要的合规性和监管结合起来，目的是使钱包持有者能够拥有和控制他们的数字身份以及数据访问和分发。其创始成员包括：Algorand、Fabrick 和 InfoCert，A.P.S.P. 是准会员。",
                        null)
                        .setHeadUp(true)
                        .addAction(R.mipmap.ic_launcher,"确定", PendingIntentUtils.buildBroadcastIntent(NotifyBroadCastReceiver.class,NotifyBroadCastReceiver.ACTION_SUBMIT,0))
                        .addAction(R.mipmap.ic_launcher,"取消",PendingIntentUtils.buildBroadcastIntent(NotifyBroadCastReceiver.class,NotifyBroadCastReceiver.ACTION_CANCEL,0))
                        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                        .setIsPolling(true)
                        .show();
                break;
            case 1:
                //大图通知
                Map<String,Object> params = new HashMap<>();
                params.put("param1","我是参数1");
                params.put("param2",123);
                NotificationUtils.buildBigPic(1001,R.mipmap.ic_launcher,
                        "Linux 基金会宣布成立 DizmeID 基金会",
                        "近日，Linux 基金会宣布成立 DizmeID 基金会和技术项目，旨在支持数字身份认证。这项工作将把自主身份的优势与必要的合规性和监管结合起来，目的是使钱包持有者能够拥有和控制他们的数字身份以及数据访问和分发。其创始成员包括：Algorand、Fabrick 和 InfoCert，A.P.S.P. 是准会员。")
                        .setPicRes(R.mipmap.timg2)
                        .setContentIntent(PendingIntentUtils.buildActivityIntent(TestRouterActivity.class,params))
                        .show();
                break;
            case 2:
                //多文本通知
                NotificationUtils.buildBigText(1002,R.mipmap.ic_launcher,"Linux 基金会宣布成立 DizmeID 基金会", ResourceUtils.getFileFromRaw(R.raw.test))
                        .show();
                break;
            case 3:
                //消息盒通知
                NotificationUtils.buildMailBox(1003,R.mipmap.ic_launcher,"Linux 基金会宣布成立 DizmeID 基金会")
                        .addMsg("1111111111")
                        .addMsg("2222222222")
                        .addMsg("3333333333")
                        .setForegroundService()
                        .show();
                break;
            case 4:
                //进度条通知
                progress = 0;
                handler.removeCallbacksAndMessages(null);
                showProgress();
                break;
            case 5:
                //进度通知不带进度条
                NotificationUtils.buildProgress(1005,R.mipmap.ic_launcher,"正在下载").show();
                break;
            case 6:
                //自定义通知
                NotificationUtils.buildCustomView(1006,R.mipmap.ic_launcher,
                        "自定义通知",getActivity().getPackageName(),
                        R.layout.layout_notification_custom_view)
                        .setImageViewResource(R.id.iv_icon,R.mipmap.ic_news)
                        .setTextViewText(R.id.tv_title,"Delphi 26 岁")
                        .setTextViewText(R.id.tv_content,"诞生于1995年的 Delphi 现在已经 26 岁了。1995年2月14日，Borland 公司推出了面向开发者的新工具——Delphi，旨在接替 DOS 时代盛行一时的 Turbo Pascal。")
                        .setOnClickPendingIntent(R.id.btn_reply,PendingIntentUtils.buildBroadcastIntent(NotifyBroadCastReceiver.class,NotifyBroadCastReceiver.ACTION_REPLY,0))
                        .show();
                break;
            default:
                break;
        }
    }

    private void showProgress() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (progress >= 100) {
                    return;
                }
                progress++;
                NotificationUtils.buildProgress(1004,R.mipmap.ic_launcher,"正在下载...",100,progress)
                        .show();
                showProgress();
            }
        }, 100);
    }
}
